Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
Следующий макрос VBA показывает создание узловой опоры с нелинейностью «Частичная активность». Исходный код затем находится в разделе Загрузки.
Option Explicit
' --------------------------Sub SetNSupports()' --------------------------Dim model As RFEM5.modelDim data As IModelDataDim support(0) As RFEM5.NodalSupportDim ISup As RFEM5.INodalSupportDim ISupPA как RFEM5.IPartialActivityDim nlPA как частичная активность
e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source
End Sub
Для задания расчётных длин в RFEM 6 есть два варианта. First, edit the member and navigate to the "Design Types" Tab. Second, create a new effective lengths definition.
Third, set whether you would like to calculate the critical moment according to the Eigenvalue method or Chapter F from the AISC. Fourth, navigate to the "Nodal Supports and Effective Lengths" tab. Within this tab there are two different methods that can be used.
Метод 1: Узловые опоры и расчетные длины
Referencing Member No. 1 in the attached model, for this column you can see a how the effective lengths for the Start, End, and Intermediate nodes are defined. First, click on Select Member or Member Set and then select the member. This will activate the intermediate nodes along the member length in the table. Next, check whether the node can move in the y/z axis (weak/strong axis), rotate about its local x-axis (torsion), and about its local z-axis (LTB).
The Warping (ω) input options will adjust the effective length for LTB, similar to the rotational z-axis restraint. For Ch. F calculations, the warping can be fully restrained or released. For Eigenvalue calculations, in addition to the fully restrained or released option, there is also the ability to set partial fixity with a warping spring constant.
Top and bottom flanges can also be restrained separately by fixing the y-axis and by releasing (unchecking) the rotation about the local x-axis restraint (torsion).
Метод 2: "K" Factors and Absolute Values
Referencing Member No. 5 in the attached model, the effective length factors can be used to define the unbraced length directly and/or apply the appropriate member end conditions. To adjust the unbraced lengths directly instead of utilizing the nodes on the member (Method 1), the "K" factors can be entered manually in the table below. Or the "Absolute Values" can be entered by selecting the option "Absolute Values". Then the unbraced length itself can be entered manually instead. This method is best used when there are no intermediate nodes currently present on the member.
Um ein nicht lineares Element wie ein Stabendgelenk mit Diagramm oder Ausfall anlegen zu können, muss zunächst das Stabendgelenk angelegt werden. Wenn RFEM das Stabendgelenk kennt, kann dieses über die Schnittstelle IMemberEndRelease geholt werden. Diese Schnittstelle verfügt dann über die Methoden GetData() und SetData(). Beide Methoden sind in der Lage sowohl die einfachen Stabendgelenkdaten vom Typ MemberEndRelease als auch die Daten einer Nichtlinearität auszulesen bzw. zu schreiben.
Im folgenden Beispiel wird in Stabendgelenk zunächst für die x-Richtung ein Gelenk aktiviert und dann als Nichtlinearität in x-Richtung der Typ WorkingDiagramType eingestellt. Nachdem diese Daten mithilfe eines Prepare-Finish-Modification-Blocks an RFEM übergeben wurden, legt dieses intern die Nichtlinearität an. Um diese mit Daten zu füllen, werden zunächst die vorhandenen Daten über GetData() von der Schnittstelle des Stabendgelenks geholt.
Nachdem die Daten (NonlinearityDiagram) ausgefüllt wurden, werde diese wieder mit SetData() übergeben:
Sub SetNLDiagram()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")On Error GoTo eDim iApp As RFEM5.ApplicationSet iApp = model.GetApplicationiApp.LockLicenseiApp.ShowDim iModelData As RFEM5.iModelDataSet iModelData = model.GetModelData' modify member end release' set nonlinearity "Diagram" for x translationDim iMemHing As RFEM5.IMemberHingeSet iMemHing = iModelData.GetMemberHinge(1, AtNo)Dim memHing As RFEM5.MemberHingememHing = iMemHing.GetData()memHing.TranslationalConstantX = 0memHing.TranslationalNonlinearityX = WorkingDiagramType' Set new dataiModelData.PrepareModificationiMemHing.SetData memHingiModelData.FinishModification' create diagramDim tbl1() As DoubleReDim tbl1(1, 1)tbl1(0, 0) = 0 ' u-xtbl1(0, 1) = 0 ' P-xtbl1(1, 0) = 0.02 ' u-x (mm)tbl1(1, 1) = 2000 ' P-x (N)Dim nldHing As RFEM5.NonlinearityDiagramnldHing.ForceType = StiffnessDiagramForceType.NoneStiffnessForcenldHing.PositiveZoneType = DiagramAfterLastStepType.TearingDiagramTypenldHing.PositiveZone = tbl1nldHing.Symmetric = TrueDim iNldiag As RFEM5.INonlinearityDiagramSet iNldiag = iMemHing.GetNonlinearity(AlongAxisX)' Set new dataiModelData.PrepareModificationiNldiag.SetData nldHingiModelData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Die Vorgehensweise ist für Knotenlager und andere Nichtlinearitäten analog.
Поворот узловой опоры определяется посредством пользовательской системы координат. В следующем примере узловая опора повернута на 45 ° вокруг оси z. Нет необходимости определять новую систему координат через узлы. В этом случае достаточно использовать параметр RotatedSystemType, который позволяет выполнить пространственный поворот опоры с помощью трех поворотов вокруг оси x, y и z. Поворот задается в радианах:
Sub test_nodal_support ()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' получить интерфейс данных моделиDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData' получить интерфейс узловой опорыРазмеры как в RFEM5.INodalSupportУстановите iNs = iModData.GetNodalSupport (1, AtNo)' получить данные узловой опорыРазмеры как в RFEM5.NodalSupportns = iNs.GetData' изменить данныеns.ReferenceSystem = UserDefinedSystemTypens.UserDefinedReferenceSystem.Axis1 = AxisXns.UserDefinedReferenceSystem.Axis2 = AxisYns.UserDefinedReferenceSystem.Type = RotatedSystemTypens.UserDefinedReferenceSystem.RotationAngles.X = 0ns.UserDefinedReferenceSystem.RotationAngles.Y = 0ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3,14159265359/180' задать данные узловой опорыiModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Программа берет существующую узловую опору из текущей открытой модели и модифицирует ее. Поскольку пользовательская система координат не является прямой частью интерфейса INodalSupport узловой опоры, то поворот, конечно же, можно передать при создании узловой опоры.
Чтобы можно было присвоить стержню эксцентриситет, обычно необходимо создать его перед самой настройкой стержня.
Другой подход затем показан в следующем примере, Другой подход затем показан в следующем примере, где сначала создается эксцентриситет, который потом назначается уже существующему стержню посредством его интерфейса:
'---------------------Sub SetEccentricity()'---------------------Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim iModData As RFEM5.iModelDataSet iModData = model.GetModelData' create eccentricityDim eccens(0 To 0) As RFEM5.MemberEccentricityeccens(0).No = 1eccens(0).Comment = "test eccentricity"eccens(0).ReferenceSystem = LocalSystemTypeeccens(0).Start.X = 0eccens(0).Start.Y = 0eccens(0).Start.Z = 0eccens(0).End.X = 0eccens(0).End.Y = 0eccens(0).End.Z = 0eccens(0).HingeAtEndNode = Falseeccens(0).HingeAtStartNode = Falseeccens(0).HorizontalAlignment = Middleeccens(0).VerticalAlignment = Bottomeccens(0).TransverseOffset = Trueeccens(0).ReferenceObjectNo = 2eccens(0).ReferenceObjectType = MemberObjecteccens(0).HorizontalAxisOffset = Middleeccens(0).VerticalAxisOffset = Topeccens(0).StartAdjoiningMembersOffset = Falseeccens(0).EndAdjoiningMembersOffset = FalseiModData.PrepareModificationiModData.SetMemberEccentricities eccensiModData.FinishModification' add eccentricity to memberDim iMem As RFEM5.IMemberSet iMem = iModData.GetMember(1, AtNo)Dim mem As RFEM5.Membermem = iMem.GetDatamem.EccentricityNo = 1iModData.PrepareModificationiMem.SetData memiModData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Поскольку эксцентриситеты стержней можно передавать лишь в виде поля, было в данных целях создано поле только с одним элементом. На прилагаемом изображении перечисляются эти элементы всегда со ссылкой на соответствующие графические элементы.
Трение - это тип нелинейности, который можно изменить только через интерфейс к шарниру стержня.
Для этого сначала необходимо создать шарнир стержня, если он еще не создан. Затем применим к шарниру стержня интерфейс IMemberHinge, а к нелинейности интерфейс IFriction. После того уже можно для изменения требуемых данных (в данном случае это запись Friction) использовать методы GetData и SetData:
Sub SetMemberHingeFriction() Dim model As RFEM5.model Set model = GetObject(, "RFEM5.Model") model.GetApplication.LockLicense On Error GoTo e Dim data As IModelData Set data = model.GetModelData Dim hinge(0 To 0) As RFEM5.MemberHinge hinge(0).No = 1 hinge(0).RotationalConstantX = 1 hinge(0).RotationalConstantY = 2 hinge(0).RotationalConstantZ = 3 hinge(0).TranslationalConstantX = 4 hinge(0).TranslationalConstantY = 5 hinge(0).TranslationalConstantZ = 6 hinge(0).Comment = "Member Hinge 1" hinge(0).TranslationalNonlinearityX = FrictionAType data.PrepareModification data.SetMemberHinges hinge data.FinishModification ' get interface for member hinge Dim imemhing As IMemberHinge Set imemhing = data.GetMemberHinge(1, AtNo) ' get interface for nonlinearity "friction" Dim iFric As IFriction Set iFric = imemhing.GetNonlinearity(AlongAxisX) ' get friction data Dim fric As Friction fric = iFric.GetData fric.Coefficient1 = 0.3 ' set friction data data.PrepareModification iFric.SetData fric data.FinishModification e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source Set data = Nothing model.GetApplication.UnlockLicense Set model = NothingEnd Sub
В случае трения Vy + Vz, используется для настройки второго коэффициента команда Coefficient2. Постоянная пружины в диалоговом окне «Трение» затем определяется с помощью продольной пружины шарнира стержня. В данном конкретном случае это запись TranslationalConstantX , которая управляет настройками для направления x (см. Рисунок 01).
Способ создания узловой опоры с диаграммой нелинейности показан в следующем макросе VBA. Исходный код затем находится в разделе Загрузки.
Деформации стержней можно считать, например, с помощью функции "GetMemberDeformations()". Однако эта функция ожидает указание номера, типа метода подсчета стержней (номер стержня/номер в списке) и то, какую систему координат следует использовать. Пользователь так может выбрать, будет ли использоваться местная система координат, система главных осей или общая система координат:
Sub test_results_member_axis()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'get interface for calculationDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'get interface for resultsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'get deformations in local coordinate systemDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'get deformations in global coordinate systemDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'get deformations in principal coordinate systemDim memDefs_P() As RFEM5.MemberDeformationsmemDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)e:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Эта небольшая программа способна считать местные деформации (memDefs_L) в осях стержня и главных осях (memDefs_P), а также общие деформации в осях стержня (memDefs_G).
При программировании через интерфейс COM, доступны для узловой опоры функции «ReferenceSystem» и «UserDefinedReferenceSystem». Причем с помощью функции «ReferenceSystem» можно сначала определить тип пользовательской системы координат (например, «Повернутая» или «Система координат»), а затем, в зависимости от выбранного типа, задать данный тип системы посредством команды «UserDefinedReferenceSystem».
В следующем примере была в качестве типа системы установлена «Система координат», для которой была создана также пользовательская система координат:
// create user defined coordinate systemIGuideObjects iGuide = iModel.GetGuideObjects();// delete cosy No 2UserCoordinateSystem[] csList = iGuide.GetCoordinateSystems();if (csList.Length > 1){for (int i = 0; i < csList.Length; ++i){if (csList[i].No == 2){iGuide.PrepareModification();iGuide.DeleteObjects(GuideObjectType.CoordinateSystemObject, "2");iGuide.FinishModification();}}}// define new cosy No 2UserCoordinateSystem uCs = new UserCoordinateSystem();uCs.Name = "test";uCs.Comment = "test";uCs.No = 2;uCs.IsValid = true;uCs.Origin.X = 1;uCs.Origin.Y = 0;uCs.Origin.Z = 1;uCs.Point1.X = 2;uCs.Point1.Y = 0;uCs.Point1.Z = 1;uCs.Point2.X = 1;uCs.Point2.Y = 1;uCs.Point2.Z = 2;// set cosy No 2iGuide.PrepareModification();iGuide.SetCoordinateSystem(uCs);iGuide.FinishModification();// create nodal support with user defined cosyNodalSupport ns = new NodalSupport();ns.SupportConstantX = -1;ns.SupportConstantY = -1;ns.SupportConstantZ = -1;ns.RestraintConstantX = -1;ns.RestraintConstantY = 0;ns.RestraintConstantZ = -1;ns.Comment = "user defined cosy";ns.NodeList = "1";ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;ns.UserDefinedReferenceSystem.ObjectNo = 2;ns.UserDefinedReferenceSystem.Type = UserDefinedAxisSystemType.DefinedCoordinateSystemType;iModData.PrepareModification();iModData.SetNodalSupport(ns);iModData.FinishModification();
Для создания системы координат потребуется наличие интерфейса для вспомогательных объектов: 'IGuideObjects'. С помощью функции «DeleteObjects()» потом сначала удалится существующая система координат номер 2, а затем посредством функции «SetCoordinateSystem()» создастся новая. Не забудьте также обратить внимание на блок «Prepare/Finish-Modification», благодаря которому можно добавлять новые элементы.
Узловая опора затем передается через интерфейс «IModelData». Здесь тоже потребуется блок «Prepare/Finish-Modification».
Каждая поверхность имеет в программе RFEM местную систему координат (x, y, z).
Координаты x и y лежат в поверхности, z перпендикулярно поверхности. Верхняя и нижняя стороны поверхности определяются направлением оси z.
Направление, в котором указывает местная ось z, - это нижняя сторона поверхности. Обычно эта местная ось z направлена вниз. В зависимости от заданного направления граничных линий и порядка щелчка по линиям, местная ось z может быть направлена вверх.
Однако это очень легко исправить. Сначала отобразите местные системы координат поверхности.
Для устранения проблемы, так действуйте следующим образом:
Активируйте навигатор проекта - отобразите в левой части экрана.
Откройте ветку «Модель» → «Поверхности» и установите флажок напротив записи «Системы осей поверхности x, y, z».
Чтобы изменить направление местной оси z, щелкните правой кнопкой мыши по соответствующей поверхности и выберите в контекстном меню команду «Reverse Local Axis System».
Местные оси x, y повернуть невозможно. Направление этих осей напрямую зависит от общей оси и положения поверхности. Например, если поверхность задана в плоскости x, y, местная ось x направлена в направлении общей оси x. Если вы наклоните эту плиту вне плоскости, местная система координат повернется автоматически.
Да, узловые высвобождения можно создавать через интерфейс COM. Вот пример:
Sub nodal_release ()Dim iApp As RFEM5.ApplicationDim iModel As RFEM5.model On Error GoTo e Set iApp = GetObject(, "RFEM5.Application")iApp.LockLicense test = iApp.GetModelCountУстановить iModel = iApp.GetModel (0) Dim iModeldata как RFEM5.iModeldataУстановите iModeldata = iModel.GetModelData ' для установки узлового высвобождения требуется шарнир стержня' объект для системы координат не может совпадать с высвобожденнымТусклый кивокnodRel.Location = OriginalLocationTypenodRel.AxisSystem = LocalFromLinenodRel.AxisSystemFromObjectNo = 2nodRel.Comment = "тестовый высвобождение узла"nodRel.MemberHingeNo = 1nodRel.NodeNo = 1nodRel.ReleasedMembers = 1 iModeldata.PrepareModificationiModeldata.SetNodalRelease nodReliModeldata.FinishModification e: Если Err.Number <> 0, то MsgBox Err.description,, Err.Source iApp.UnlockLicense
Обратите внимание, что местная система координат может не относиться к тем же элементам, что и высвобожденные.
Причина: Каждая поверхность имеет в программе RFEM местную систему координат (x, y, z). Координаты x и y лежат в поверхности, z перпендикулярно поверхности.
Верхняя и нижняя стороны поверхности определяются направлением оси z. Направление, в котором указывает местная ось z, - это нижняя сторона поверхности. Обычно эта местная ось z направлена вниз. В зависимости от заданного направления граничных линий и порядка щелчка по линиям, местная ось z может быть направлена вверх.
Однако это очень легко исправить. Сначала отобразите местные системы координат поверхности. Действуйте следующим образом:
Активируйте навигатор Изобразить в левой части экрана. Это можно сделать с помощью второй вкладки в нижней части навигатора. Здесь можно настроить все свойства изображения в виде дерева.
Нижняя арматура находится на той стороне плиты, где направление z положительно.